---
title: Shell (bash)
---

Giving agents access to the shell is powerful (though risky outside a sandboxed environment).

The LLM can use it to execute any shell commands. A common use case for this is letting the LLM interact with your local file system.

**Note:** Shell tool does not work with Windows OS.

```python
%pip install -qU langchain-community
```

```python
from langchain_community.tools import ShellTool

shell_tool = ShellTool()
```

```python
print(shell_tool.run({"commands": ["echo 'Hello World!'", "time"]}))
```

```output
Hello World!

real 0m0.000s
user 0m0.000s
sys 0m0.000s
```
```output
/Users/wfh/code/lc/lckg/langchain/tools/shell/tool.py:34: UserWarning: The shell tool has no safeguards by default. Use at your own risk.
  warnings.warn(
```

### Use with Agents

As with all tools, these can be given to an agent to accomplish more complex tasks. Let's have the agent fetch some links from a web page.

```python
from langchain.agents import create_agent

tools = [shell_tool]
agent = create_agent("openai:gpt-4.1-mini", tools)

input_message = {
    "role": "user",
    "content": (
        "Download the README here and identify the link for LangChain tutorials: "
        "https://raw.githubusercontent.com/langchain-ai/langchain/master/README.md"
    ),
}

for step in agent.stream(
    {"messages": [input_message]},
        stream_mode="values",
):
    step["messages"][-1].pretty_print()
```

```output
================================ Human Message =================================

Download the README here and identify the link for LangChain tutorials: https://raw.githubusercontent.com/langchain-ai/langchain/master/README.md
================================== Ai Message ==================================
Tool Calls:
  terminal (call_mr86V0d6E9nQiJZT7Xw5fH0G)
 Call ID: call_mr86V0d6E9nQiJZT7Xw5fH0G
  Args:
    commands: ['curl -o README.md https://raw.githubusercontent.com/langchain-ai/langchain/master/README.md']
Executing command:
 ['curl -o README.md https://raw.githubusercontent.com/langchain-ai/langchain/master/README.md']
================================= Tool Message =================================
Name: terminal

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  5169  100  5169    0     0   114k      0 --:--:-- --:--:-- --:--:--  114k
```
```output
/langchain/libs/community/langchain_community/tools/shell/tool.py:33: UserWarning: The shell tool has no safeguards by default. Use at your own risk.
  warnings.warn(
```
```output
================================== Ai Message ==================================
Tool Calls:
  terminal (call_LF8TGrgS84WvUvaazYnVfib8)
 Call ID: call_LF8TGrgS84WvUvaazYnVfib8
  Args:
    commands: ["grep -i 'tutorial' README.md"]
Executing command:
 ["grep -i 'tutorial' README.md"]
================================= Tool Message =================================
Name: terminal

- [Tutorials](https://python.langchain.com/docs/tutorials/): Simple walkthroughs with
```
```output
/langchain/libs/community/langchain_community/tools/shell/tool.py:33: UserWarning: The shell tool has no safeguards by default. Use at your own risk.
  warnings.warn(
```
```output
================================== Ai Message ==================================

The link for LangChain tutorials in the README is: https://python.langchain.com/docs/tutorials/
```

```python

```
